package com.zzx;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.MissingResourceException;
import java.util.Properties;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;


/**
 * 
   *    配置文件读取
 * @author Administrator
 *
 */
public final class PropertiesUtil extends PropertyPlaceholderConfigurer{
	
	private static Map<String, String> psMap = new HashMap<>();//将properties文件读取成map格式。
	/**
	 *  第一种解析方案
	 * 通过 xml配置文件读取 properties 文件，解析，存入Map集合。
	 * @author zzx
	 */
	@Override
	protected void processProperties(
			ConfigurableListableBeanFactory beanFactoryToProcess,
			Properties props) throws BeansException {
		super.processProperties(beanFactoryToProcess, props);
		for (Object key : props.keySet()) {
			String keyStr = key.toString();
			String value = props.getProperty(keyStr);
			psMap.put(keyStr, value);
		}
	}
	/**
	 * 第二中解析方案
	   * 不通过配置文件直接读取 properties 文件并且解析里面内容，存入到 map中，
	 * @author zzx 
	 */
	public static void getFile() {
		Properties system = new Properties();
		try {
			system.load(PropertiesUtil.class.getResourceAsStream("/system.properties"));
			Iterator iter = system.entrySet().iterator();
			while(iter.hasNext()) {
				Map.Entry me = (Map.Entry) iter.next();
				String key = (String) me.getKey();
				String value = (String) me.getValue();
				psMap.put(key, value);
			}
		} catch (IOException e) {
			System.err.println("错误"+e);
			e.printStackTrace();
		}		
	}

	/**
	 * 根据key值获取配置文件内容。
	 * @param key
	 * @return
	 */
	public static String getString(String key) {
		try {
			return psMap.get(key);
		} catch (MissingResourceException e) {
			System.err.println("***错误***"+e);
			return null;
		}
	}

	/**
	 * 根据key获取值
	 * 
	 * @param key
	 * @return
	 */
	public static int getInt(String key) {
		return Integer.parseInt(psMap.get(key));
	}
	
	public static void main(String[] args) {
		System.err.println("**********开始****************");
		getFile();
		System.out.println("*map"+psMap.toString());
		System.err.println(psMap.get("FTP_HOST_IP"));
		System.err.println("**********结束**************");
	}
	
}
